package com.yuelao.yuelao_backend.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yuelao.yuelao_backend.config.PostgreSQLJsonbListTypeHandler;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 用户详细资料表
 */
@Data
@TableName(value = "user_profiles", autoResultMap = true)
public class UserProfile implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 家乡省份
     */
    private String hometownProvince;

    /**
     * 家乡城市
     */
    private String hometownCity;

    /**
     * 家乡区县
     */
    private String hometownDistrict;

    /**
     * 居住省份
     */
    private String residenceProvince;

    /**
     * 居住城市
     */
    private String residenceCity;

    /**
     * 居住区县
     */
    private String residenceDistrict;

    /**
     * 身高（cm）
     */
    private Integer height;

    /**
     * 体重（kg）
     */
    private Integer weight;

    /**
     * 学历
     */
    private String education;

    /**
     * 毕业学校
     */
    private String school;

    /**
     * 职业
     */
    private String occupation;

    /**
     * 公司
     */
    private String company;

    /**
     * 收入范围
     */
    private String income;

    /**
     * 房产情况
     */
    private String house;

    /**
     * 车产情况
     */
    private String car;

    /**
     * 婚姻状况
     */
    private String maritalStatus;

    /**
     * 是否有孩子
     */
    private Boolean hasChildren;

    /**
     * 个人介绍
     */
    private String introduction;

    /**
     * 择偶要求
     */
    private String requirements;

    /**
     * 兴趣爱好（JSON数组）
     */
    @TableField(typeHandler = PostgreSQLJsonbListTypeHandler.class)
    private List<String> hobbies;

    /**
     * 交友目的（JSON数组）
     */
    @TableField(typeHandler = PostgreSQLJsonbListTypeHandler.class)
    private List<String> purposes;

    /**
     * 个人标签（JSON数组）
     */
    @TableField(typeHandler = PostgreSQLJsonbListTypeHandler.class)
    private List<String> tags;

    /**
     * 星座
     */
    private String constellation;

    /**
     * 血型
     */
    private String bloodType;

    /**
     * 吸烟情况
     */
    private String smoking;

    /**
     * 饮酒情况
     */
    private String drinking;

    /**
     * 是否展示高清照片
     */
    private Boolean showClearImage;

    /**
     * 资料完整度（百分比）
     */
    private Integer profileCompletion;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
}

